package com.powerflasher.SampleApp{
	import org.flixel.*;
	/**
	 * @author Eros Esp�nola
	 */
	public class Nivel1 extends FlxState{
		[Embed(source = "brick_tiles_1.png")] public static var bricks:Class;
		//[Embed(source = "brincks.png")] public static var bricks:Class;
		[Embed(source = "6.png")] public static var clouds:Class;
		[Embed(source = "map1_1_1.csv", mimeType = "application/octet-stream")] public static var mapa:Class;
		[Embed(source = "map1_1_2.csv", mimeType = "application/octet-stream")] public static var mapaElastico:Class;
		
		private var cientifico:Cientifico;
		private var bala:Bala;
		private var misil:Bala;
		private var jugador:Jugador;
		private var helicopeto:Helicoptero;
		
		private var cielo:sky;
		private var map:FlxTilemap;
		private var mapElastic:FlxTilemap;
		private var t:Number = 0;

		
		private var paused:Boolean;
		private var texto:FlxText;
		
		public function Nivel1(){
        	super();
        }
		
		override public function create():void{
            jugador = new Jugador(0,1160);
			cientifico=new Cientifico(350, 1179);
			helicopeto = new Helicoptero(350, 400);
			bala = new Bala(0, 0, 0, 0, 0);
			misil = new Bala(0, 0, 0, 0, 0);
			
			cielo=new sky(0, 0);

			map=new FlxTilemap();
			map.loadMap(new mapa(), bricks, 32, 32);

			map.setTileProperties(14, FlxObject.UP);
			map.setTileProperties(15, FlxObject.UP);
			
			mapElastic=new FlxTilemap();
			mapElastic.loadMap(new mapaElastico(), bricks,32,32);
			
			mapElastic.setTileProperties(8, FlxObject.UP);
			mapElastic.setTileProperties(6, FlxObject.UP);
			
			paused = false;
			texto=new FlxText(0, 340, FlxG.width, "PAUSED GAME").setFormat(null, 65, 0xFFFFFF, "center");
			texto.kill();


			add(cielo);
			add(map);
			add(mapElastic);
			add(jugador);
			add(cientifico);
			add(helicopeto);
			add(bala);
			add(texto);
			
			FlxG.worldBounds = new FlxRect(0, 0, 640, 1680);
			FlxG.camera.y -= 700;
			FlxG.camera.target=jugador;	
			FlxG.camera.follow(jugador);
			FlxG.camera.setBounds(0,-254,640,2300);
			
		}
		
		override public function update():void{
			if(FlxG.keys.justPressed("P"))
				paused = !paused;
			if(!paused)
				texto.kill();
			if(paused){
				texto.y=jugador.y-340;
				texto.revive();
				return;
			}
			 
			super.update();
			if(FlxG.keys.pressed("RIGHT") && jugador.x<590){
				jugador.x = jugador.x+2;
				jugador.play("derecha");
			}
			if(FlxG.keys.pressed("LEFT") && jugador.x>0){
				jugador.x = jugador.x-2;
				jugador.play("izquierda");
			}
			if(FlxG.keys.justPressed("UP") && (FlxG.collide(jugador,map))){
				jugador.velocity.y = -380;
				jugador.y -= 30;
				jugador.play("arriba");	
			}
			if((FlxG.collide(jugador,mapElastic))){
				jugador.velocity.y = -500;
				jugador.y -= 80;
				jugador.play("arriba");	
			}
			if(FlxG.overlap(jugador, bala) || FlxG.overlap(jugador, misil)){
				jugador.kill();
				FlxG.switchState(new Inicio());
			}
			t+=FlxG.elapsed;
			if(t>=1.5){
				bala = cientifico.fire(350,1200,10,-300,0);
				add(bala);
				if(jugador.y <800 && jugador.y>600){
					misil = helicopeto.fire(400, 550, 10,-300,300);
					add(misil);
				}
				t=0;
			}
			if(bala.x < 80){
				bala.kill();
			}
			if(misil.y > 1000){
				misil.kill();
			}
			if(jugador.y<26){
				FlxG.switchState(new Nivel1_2());
			}
			
			FlxG.collide(jugador,map);	
			FlxG.collide(jugador,mapElastic);		
			jugador.acceleration.y = 1000;
			FlxG.camera.update();
		}
	}
}
